gate data structures